
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>MySQL事务的隔离级别有哪些 - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>MySQL事务的隔离级别有哪些 - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">数据库事务隔离级别的主要目的是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">事务隔离级别是数据库管理系统（DBMS）用来控制并发访问的一个重要概念，它定义了事务之间的可见性和相互影响的程度，以权衡事务的并发性和一致性。</div>
          </div>
          <div class="card-source">来源: 文档开篇第一段</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">SQL标准定义了哪四种事务隔离级别？MySQL数据库默认使用哪一种？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">SQL标准定义的四个隔离级别是：读未提交（READ UNCOMMITTED）、读已提交（READ COMMITTED）、可重复读（REPEATABLE READ）和串行化（SERIALIZABLE）。其中，可重复读是MySQL的默认级别。</div>
          </div>
          <div class="card-source">来源: 文档中对四种隔离级别的列举及后续说明段落</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">数据库隔离级别的强度与系统性能之间通常存在什么样的关系？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">隔离级别的强度与系统性能通常成反比。从“读未提交”到“串行化”，隔离强度逐渐增强，数据一致性更高，但系统性能会逐渐变差。</div>
          </div>
          <div class="card-source">来源: 文档中对四种隔离级别列举后的说明段落</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">概念</div>
          <div class="card-question">什么是脏读（Dirty Read）？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">概念</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">脏读是指一个事务读取了另一个事务已经修改但尚未提交的数据。如果后续那个事务回滚了修改，那么第一个事务读取到的就是无效的“脏”数据。</div>
          </div>
          <div class="card-source">来源: 文档中「脏读（Dirty Read）」部分的定义和场景举例</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">概念</div>
          <div class="card-question">什么是不-可重复读（Non-Repeatable Read）？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">概念</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">不可重复读是指在一个事务内部，对同一数据的多次查询返回了不同的结果。这通常是因为在两次查询之间，有另一个事务修改或删除了该行数据并已提交。</div>
          </div>
          <div class="card-source">来源: 文档中「不可重复读（Non-Repeatable Read）」部分的定义和场景举例</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">概念</div>
          <div class="card-question">什么是幻读（Phantom Read）？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">概念</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">幻读是指在一个事务内部，相同的范围查询在不同时间执行时，返回的结果集的行数发生了变化。这通常是由于另一个事务在该范围内插入了新的数据行并已提交。</div>
          </div>
          <div class="card-source">来源: 文档中「幻读（Phantom Read）」部分的定义和场景举例</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">哪一个隔离级别可以解决“脏读”问题，但仍可能发生“不可重复读”？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">读已提交（Read Committed）隔离级别可以解决脏读问题。然而，在该级别下，仍然可能发生不可重复读和幻读。</div>
          </div>
          <div class="card-source">来源: 文档中的隔离级别与并发问题关系图及「脏读」部分的隔离级别解决方案</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">要解决“幻读”问题，至少需要使用哪个隔离级别？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">要解决幻读问题，需要使用串行化（Serializable）隔离级别。该级别通过确保每个事务独立执行来避免幻读。</div>
          </div>
          <div class="card-source">来源: 文档中「幻读（Phantom Read）」部分的隔离级别解决方案</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">在为应用选择事务隔离级别时，主要需要权衡哪两个方面？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">选择隔离级别时，需要根据具体业务需求权衡一致性（Consistency）和并发性（Concurrency）的要求。高隔离级别能提供更强的一致性但可能导致性能下降，而低隔离级别有更高的并发性但可能引入一致性问题。</div>
          </div>
          <div class="card-source">来源: 文档中「使用建议」部分</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
